#pragma once

#include <adwin/ADwin_export.h>

#include <memory>

namespace ADwin {
namespace Driver {
class ADwinSystem;

class Parameter {
 public:
  static const int MaxIndex = 80;

  Parameter(ADwinSystem* adwinSystem, int parameterNumber);
  ~Parameter();

  Parameter() = delete;
  Parameter(const Parameter&) = delete;
  Parameter& operator=(const Parameter&) = delete;
  Parameter(Parameter&&) = delete;
  Parameter& operator=(Parameter&&) = delete;

  int value() const;
  void setValue(int value);

 private:
  class Impl;
  std::unique_ptr<Impl> _impl;
};
}  // namespace Driver
}  // namespace ADwin